package com.mem.app.model;
// Generated 21/Ago/2015 19:35:12 by Hibernate Tools 4.3.1

import java.util.Date;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Paciente generated by hbm2java
 */
@Entity
@Table(name = "paciente", catalog = "memdb")
public class Paciente implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int idPaciente;
	private Morada moradaByIdLocalNascimento;
	private Morada moradaByIdMorada;
	private Tecnico tecnico;
	private String nomeCompleto;
	private String nomeProprio;
	private String apelido;
	private Date dataNascimento;
	private String genero;
	private String profissao;
	private String escolaridade;
	private String estadoCivil;
	private Integer nivelDoenca;
	private String nomeMedico;
	private String especialidadeMedico;
	private Integer nivelSessao;
	private List<Atividade> atividades = new ArrayList<Atividade>(0);
	private List<Interesse> interesses = new ArrayList<Interesse>(0);
	private List<Evento> eventos = new ArrayList<Evento>(0);
	private List<Relacaofamiliarfamiliar> relacaofamiliarfamiliars = new ArrayList<Relacaofamiliarfamiliar>(0);
	private List<Relacaopacientefamiliar> relacaopacientefamiliars = new ArrayList<Relacaopacientefamiliar>(0);
	private List<Interacao> interacaos = new ArrayList<Interacao>(0);

	public Paciente() {
	}

	public Paciente(int idPaciente, Morada moradaByIdLocalNascimento, Morada moradaByIdMorada, Tecnico tecnico) {
		this.idPaciente = idPaciente;
		this.moradaByIdLocalNascimento = moradaByIdLocalNascimento;
		this.moradaByIdMorada = moradaByIdMorada;
		this.tecnico = tecnico;
	}

	public Paciente(int idPaciente, Morada moradaByIdLocalNascimento, Morada moradaByIdMorada, Tecnico tecnico,
			String nomeCompleto, String nomeProprio, String apelido, Date dataNascimento, String genero,
			String profissao, String escolaridade, String estadoCivil, Integer nivelDoenca, String nomeMedico,
			String especialidadeMedico, Integer nivelSessao, List<Atividade> atividades, List<Interesse> interesses, List<Evento> eventos,
			List<Relacaofamiliarfamiliar> relacaofamiliarfamiliars, List<Relacaopacientefamiliar> relacaopacientefamiliars, List<Interacao> interacaos) {
		this.idPaciente = idPaciente;
		this.moradaByIdLocalNascimento = moradaByIdLocalNascimento;
		this.moradaByIdMorada = moradaByIdMorada;
		this.tecnico = tecnico;
		this.nomeCompleto = nomeCompleto;
		this.nomeProprio = nomeProprio;
		this.apelido = apelido;
		this.dataNascimento = dataNascimento;
		this.genero = genero;
		this.profissao = profissao;
		this.escolaridade = escolaridade;
		this.estadoCivil = estadoCivil;
		this.nivelDoenca = nivelDoenca;
		this.nomeMedico = nomeMedico;
		this.especialidadeMedico = especialidadeMedico;
		this.nivelSessao = nivelSessao;
		this.atividades = atividades;
		this.interesses = interesses;
		this.eventos = eventos;
		this.relacaofamiliarfamiliars = relacaofamiliarfamiliars;
		this.relacaopacientefamiliars = relacaopacientefamiliars;
		this.interacaos = interacaos;
	}

	@Id

	@Column(name = "idPaciente", unique = true, nullable = false)
	public int getIdPaciente() {
		return this.idPaciente;
	}

	public void setIdPaciente(int idPaciente) {
		this.idPaciente = idPaciente;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idLocalNascimento", nullable = false)
	public Morada getMoradaByIdLocalNascimento() {
		return this.moradaByIdLocalNascimento;
	}

	public void setMoradaByIdLocalNascimento(Morada moradaByIdLocalNascimento) {
		this.moradaByIdLocalNascimento = moradaByIdLocalNascimento;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idMorada", nullable = false)
	public Morada getMoradaByIdMorada() {
		return this.moradaByIdMorada;
	}

	public void setMoradaByIdMorada(Morada moradaByIdMorada) {
		this.moradaByIdMorada = moradaByIdMorada;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idTecnico", nullable = false)
	public Tecnico getTecnico() {
		return this.tecnico;
	}

	public void setTecnico(Tecnico tecnico) {
		this.tecnico = tecnico;
	}

	@Column(name = "nomeCompleto", length = 45)
	public String getNomeCompleto() {
		return this.nomeCompleto;
	}

	public void setNomeCompleto(String nomeCompleto) {
		this.nomeCompleto = nomeCompleto;
	}

	@Column(name = "nomeProprio", length = 45)
	public String getNomeProprio() {
		return this.nomeProprio;
	}

	public void setNomeProprio(String nomeProprio) {
		this.nomeProprio = nomeProprio;
	}

	@Column(name = "apelido", length = 45)
	public String getApelido() {
		return this.apelido;
	}

	public void setApelido(String apelido) {
		this.apelido = apelido;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "dataNascimento", length = 10)
	public Date getDataNascimento() {
		return this.dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	@Column(name = "genero", length = 45)
	public String getGenero() {
		return this.genero;
	}

	public void setGenero(String genero) {
		this.genero = genero;
	}

	@Column(name = "profissao", length = 45)
	public String getProfissao() {
		return this.profissao;
	}

	public void setProfissao(String profissao) {
		this.profissao = profissao;
	}

	@Column(name = "escolaridade", length = 45)
	public String getEscolaridade() {
		return this.escolaridade;
	}

	public void setEscolaridade(String escolaridade) {
		this.escolaridade = escolaridade;
	}

	@Column(name = "estadoCivil", length = 45)
	public String getEstadoCivil() {
		return this.estadoCivil;
	}

	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	@Column(name = "nivelDoenca")
	public Integer getNivelDoenca() {
		return this.nivelDoenca;
	}

	public void setNivelDoenca(Integer nivelDoenca) {
		this.nivelDoenca = nivelDoenca;
	}

	@Column(name = "nomeMedico", length = 45)
	public String getNomeMedico() {
		return this.nomeMedico;
	}

	public void setNomeMedico(String nomeMedico) {
		this.nomeMedico = nomeMedico;
	}

	@Column(name = "especialidade_medico", length = 45)
	public String getEspecialidadeMedico() {
		return this.especialidadeMedico;
	}

	public void setEspecialidadeMedico(String especialidadeMedico) {
		this.especialidadeMedico = especialidadeMedico;
	}

	@Column(name = "nivelSessao")
	public Integer getNivelSessao() {
		return this.nivelSessao;
	}

	public void setNivelSessao(Integer nivelSessao) {
		this.nivelSessao = nivelSessao;
	}

	@ManyToMany(fetch = FetchType.LAZY, mappedBy = "pacientes")
	public List<Atividade> getAtividades() {
		return this.atividades;
	}

	public void setAtividades(List<Atividade> atividades) {
		this.atividades = atividades;
	}

	@ManyToMany(fetch = FetchType.LAZY, mappedBy = "pacientes")
	public List<Interesse> getInteresses() {
		return this.interesses;
	}

	public void setInteresses(List<Interesse> interesses) {
		this.interesses = interesses;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paciente")
	public List<Evento> getEventos() {
		return this.eventos;
	}

	public void setEventos(List<Evento> eventos) {
		this.eventos = eventos;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paciente")
	public List<Relacaofamiliarfamiliar> getRelacaofamiliarfamiliars() {
		return this.relacaofamiliarfamiliars;
	}

	public void setRelacaofamiliarfamiliars(List<Relacaofamiliarfamiliar> relacaofamiliarfamiliars) {
		this.relacaofamiliarfamiliars = relacaofamiliarfamiliars;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paciente")
	public List<Relacaopacientefamiliar> getRelacaopacientefamiliars() {
		return this.relacaopacientefamiliars;
	}

	public void setRelacaopacientefamiliars(List<Relacaopacientefamiliar> relacaopacientefamiliars) {
		this.relacaopacientefamiliars = relacaopacientefamiliars;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "paciente")
	public List<Interacao> getInteracaos() {
		return this.interacaos;
	}

	public void setInteracaos(List<Interacao> interacaos) {
		this.interacaos = interacaos;
	}

}
